#pragma once
 
//class RenderTarget {
//	public:
//		LPDIRECT3DTEXTURE9 texture; //La textura donde realmente voy a pintar.
//		LPDIRECT3DSURFACE9 surface; //La surface de la textura anterior donde se va a pintar realmente.
//		LPD3DXRENDERTOSURFACE render_to_surface; //Para gestionar el cambio.
//		bool uses_active_zbuffer;
//		CString shader_tech; 
//
//		RenderTarget() : texture(NULL), surface(NULL), render_to_surface(NULL), uses_active_zbuffer(false), shader_tech("PostProcessTech") {}
//		void init(int, int, bool);
//		void beginRender();
//		void endRender();
//		void renderPostProcess();
//		void save(CString str);
//		void destroy();
//
//		virtual HRESULT OnD3D9ResetDevice( IDirect3DDevice9* pd3dDevice );
//
//		virtual void OnD3D9LostDevice();
//
//	};
//	//The implementation of the init, beginRender and endRender methods is the following:
//
//	void RenderTarget::init(int xres, int yres, bool a_uses_active_zbuffer) {
//		uses_active_zbuffer = a_uses_active_zbuffer;
//		HRESULT hr = D3DXCreateTexture( DXUTGetD3D9Device(), xres, yres, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture);
//		assert(hr == D3D_OK);
//		hr = texture->GetSurfaceLevel(0, &surface);
//		assert(hr == D3D_OK);
//		hr = D3DXCreateRenderToSurface( DXUTGetD3D9Device(), xres, yres, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN, &render_to_surface);
//		assert(hr == D3D_OK);
//	}
//	void RenderTarget::beginRender() {
//		LPDIRECT3DSURFACE9 depth_surface;
//		HRESULT hr;
//		if(uses_active_zbuffer) {
//			hr = DXUTGetD3D9Device()->GetDepthStencilSurface(&depth_surface); assert(hr == D3D_OK);
//		}
//		assert(render_to_surface != NULL);
//		hr = render_to_surface->BeginScene(surface, NULL);
//		assert(hr == D3D_OK);
//		if(uses_active_zbuffer) {
//			DXUTGetD3D9Device()->SetDepthStencilSurface(depth_surface); assert(hr == D3D_OK);
//			depth_surface->Release();
//		}
//	}
//	void RenderTarget::endRender() {
//		assert(render_to_surface != NULL);
//		HRESULT hr = render_to_surface->EndScene(0);
//		assert(hr == D3D_OK);
//	}
	//The general render method is:

	//void render(float delta_time) {
	//	renderTarget.beginRender();
	//	DXUTGetD3D9Device()->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x80808080, 1.0f, 0);
	//	renderWorld();  //My scene render.
	//	DXUTGetD3D9Device().endRender();

	//	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	//	{
	//		renderTarget.renderPostProcess();      
	//		g_pd3dDevice->EndScene();
	//	} 
 
 
 

